home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: MegaDisc / MegaDisc 41 (1994-09)(MegaDisc Digital Publishing)(AU)(Disk 2 of 2).zip / MegaDisc 41 (1994-09)(MegaDisc Digital Publishing)(AU)(Disk 2 of 2).adf / ARexx_&_HBook / HyperText / DemoDoc.ht (.txt) < prev    next >
HyperBook  |  1994-07-30  |  75KB  |  887 lines

  1. ,IXdK
  2. D/*  Mark chunk as used; go to reference */
  3.  j = Initiator() ; i = GetName(j)
  4.  p = SearchPageName('1:',i)
  5.  if p = '' then do ; call Inform('Reference not found') ; return ; end
  6.  call InterActive(0)
  7.  g = i || "2" ; k = SearchName(':',g)
  8.  o = SetShadow(k,5) ; o = SetBorder(k,5)
  9.  call InterActive(1)
  10.  old = CallPage(p)
  11.  return
  12. z/*  Reset all gadgets to unused state */
  13.  i = Initiator() ; c = GetBackGround(i) ; bg = SetBackGround(i,c+1)
  14.  call SearchStart('1:')
  15.  do forever
  16.   obj = SearchName('','2') ; if obj = '' then leave
  17.   b = GetShadow(obj)
  18.   if b = 5 then do
  19.    call InterActive(0)
  20.    o = SetBorder(obj,2) ; o = SetShadow(obj,2)
  21.    call Interactive(1)
  22.    end
  23.   end
  24.   bg = SetBackGround(i,c)
  25.   return
  26. /* FrameSpec - for appending '.Box ' plus frame specs to a file */
  27.  top = GetClickRow('Click on the upper left corner of the frame')
  28.  left = GetColumn() ; bottom = GetClickRow('And on the bottom right corner')
  29.  right = GetColumn() ; w = right - left ; h = bottom - top
  30.  if w < 62 | h < 24 then fr= SearchName('0:','Small')
  31.  else  fr = SearchName('0:','Large')
  32.  frame= Clone(fr,'0:')
  33.  call ScaleToSize(frame,w,h)
  34.  b = SetBorder(frame,2) ; s = SetShadow(frame,1)
  35.  call SetPosition(frame,left,top)
  36.  fr = Relocate(frame,':')
  37.  str = '.Bx ' || left || ',' || top || ',' || w || ',' || h || '0a'x
  38.  page = GetName(':') ; call SaveMoreText('ram:specs',page '0a'x str)
  39.  frame = ObjectToBack(fr)
  40.     FrameSpec
  41. "Large"
  42. "Large"
  43. "AmigaGuide2"
  44. "Navigation notes2"
  45. "Quit"
  46. call QuitHyperBook()
  47. "Zero"
  48. "PageNumber"
  49. call HyperBookToBack()
  50.    /   
  51. Note3
  52.                                     
  53.           From Text to HyperText          
  54.            A Hyperbook Project                    If you're new
  55.                                                   to Hyperbook,
  56.              By John Collett                      click here to see 
  57.                July, 1994                         Navigation notes
  58.                                                   
  59.  Documents arranged in a hypertext format are, by definition, easy to
  60.  find your way around in.  Clicking on highlighted chunks of texts takes
  61.  you directly to related texts.
  62.  One such system is AmigaGuide, some of whose users appear enthusiastic,
  63.  but I have waited in vain for a really clear, step-by-step description of
  64.  how to set it up.
  65.  So I have constructed this plain but workable alternative, and am
  66.  now in the process of working out how to do two things at once :
  67.                                        
  68.                     Put it through its paces
  69.                     Explain how to use it
  70.  It may not be as pretty, as versatile, as powerful, or as fast as
  71.  AmigaGuide, but I can at least get it to work.          
  72. "Head"
  73. "Header"
  74. ltdocs 1
  75. "Navigation notes"
  76. "AmigaGuide"
  77. "PageNumber"
  78. call HyperBookToBack()
  79. "ltdocs 1"
  80. "Large"
  81. "Master12"
  82. "HBReader2"
  83. "Builder2"
  84. "Hyperbook2"
  85. Note2
  86.          To convert a plain text into a ready-to-use 
  87.          hypertext, you need these four components :
  88.                                        
  89.                   The ARexx             Hyperbook
  90.                   program                   or
  91.                   Builder               HBReader            
  92.          
  93.          
  94.                                     
  95.                   The single-page       The document 
  96.                   Hyperbook unit        to be
  97.                   Master1               processed.
  98.                                        
  99.     If a few simple formatting rules are observed in 'Document', then when
  100.     'Builder' is run, the output from the process will be a ready-to-use
  101.     hypertext file called 'Document.ht'.  That file can then be used via
  102.     Hyperbook or HBReader.
  103. "Head"
  104. "Header"
  105. ltdocs 2
  106. "Hyperbook"
  107.     "Builder"
  108. "HBReader"
  109.     "Master1"
  110. "PageNumber"
  111. call HyperBookToBack()
  112. "ltdocs 2"
  113. Note1
  114. "Colours2"
  115.     "Macros2"
  116.     "Frames2"
  117. "Running2"
  118. "Compilation2"
  119. "Preparation2"
  120. Note2
  121.     The remainder of this discussion is arranged under the following
  122.     headings :
  123.          Preparation of the input file -  one or two details of
  124.                      formatting you need to bear in mind.
  125.          Compilation  Run the Builder program, and sit back and watch.
  126.                       It takes some time.  
  127. Let it finish.
  128.          Running the output as a hypertext document.
  129.          Frames and how to add them.
  130.          Macros built in to the program - what they do.
  131.          Colours - how they are set, and how to change them.
  132.      
  133. "Head"
  134. "Header"
  135. ltdocs 3
  136. "Preparation"
  137. "Compilation"
  138.     "Running"
  139. "Frames"
  140. "Macros"
  141.     "Colours"
  142. "PageNumber"
  143. call HyperBookToBack()
  144. "Hook"
  145. "ltdocs 3"
  146. "Small"
  147. "Small"
  148. "HBReader2"
  149. "Hyperbook2"
  150. Note1
  151.                                                     
  152. | | | | | | |
  153.                                                     
  154. | | | | | | |
  155.  The standard Hyperbook navigation gadgets          
  156. | | | | | | |
  157.                                                     
  158. | | | | | | |
  159.      1 Toggle between tiny and large control panel - 
  160. | | | | | |   
  161.      2                         Go to previous page ----  
  162. | | | | |
  163.      3                             Go to next page ------
  164.   | | | |
  165.      4                            Go to first page ---------  
  166.      5                             Go to last page -----------
  167.   | |
  168.      6              Go back to where you came from --------------  |
  169.      7                A 'table of contents' gadget ----------------
  170.         
  171.    Notes 
  172.      1       The panel stays tiny in HBReader. 
  173.      2 to 5  The four arrow keys do similar jobs.
  174.      6       The 'Return' key has the same effect.
  175.              Up to 50 steps can be retraced.
  176.      7       Displays a list of page names in a window. Any item in that
  177.              list is itself clickable, to take you directly to that page -
  178.              a built-in fully-functional alternative to the standard
  179.              hypertext clickable chunks of text.
  180.    My additions to this set of tools are described on the next two pages.
  181.                    
  182. "Head"
  183. "Header"
  184. Navigation notes 1
  185. "Hyperbook"
  186. "HBReader"
  187. "PageNumber"
  188. call HyperBookToBack()
  189. Drawing8
  190. "Navigation notes 1"
  191. "Small"
  192. "Small"
  193. "hypertext2"
  194. Note1
  195.                  
  196. The Crux of HyperText Navigation
  197.                                        
  198.     Of particular significance in hypertext is the use of highlighting
  199.     to indicate chunks of text which are clickable, and which take you to
  200.     a selected destination.  You may have clicked on such a chunk to come
  201.     here to these navigation notes.
  202.      Two further gadgets appear only on Page 1 - always easy to get to.
  203.           
  204.   1  A 'Q' gadget, which, unlike the menu equivalent, lets you quit
  205.      without having to confirm whether or not you want to save first.
  206.   2  A 'Z' gadget, which lets you reset to zero the flags which show
  207.      the items you have used so far.
  208. "Head"
  209. "Header"
  210. Navigation notes 2
  211. "hypertext"
  212. "PageNumber"
  213. call HyperBookToBack()
  214. "Navigation notes 2"
  215. "Small"
  216. "Small"
  217.     "frames2"
  218. Note1
  219.       Top corners - information AND gadgets
  220.     Upper left :   "Where am I locally?"                 
  221.                                             
  222.     Shows the title of the current section and how far you are into it.
  223.     The box holding this information is also an active gadget - click on
  224.     it if and when you want to add frames.
  225.      
  226.     Upper right :  "Where am I in general?" 
  227.                                  
  228.     An entry such as '25/60' means you are on page 25 of the unit as a
  229.     whole, and that there are 60  pages in all.
  230.     This box is also a gadget : use it to push Hyperbook to the back if
  231.     you want to get at a text editor, a CLI window, or anything else
  232.     running or runnable behind the Hyperbook screen.
  233.         
  234.     If an enlarged 'Return' arrow appears at the top of the screen, as
  235.     it does here, you are on the last (or only) page of the section.
  236.     That large arrow is only a reminder.  It it not itself active - no
  237.     point clicking on it.          
  238. "Head"
  239. "Header"
  240. Navigation notes 3
  241. "frames"
  242. "PageNumber"
  243. call HyperBookToBack()
  244. "Hook"
  245. "Navigation notes 3"
  246. Note1
  247.     For the purpose of this discussion, think of a document as
  248.     containing a main text followed by a set of notes.  
  249.     A 'note' is what you see when you click on a highlighted
  250.     chunk of text, and can be of any length.
  251.     Within the document only two characters have special functions, 
  252.     and it is going to be tricky talking about the first of them
  253.     without invoking its function.
  254.               
  255. "Head"
  256. "Header"
  257. Preparation 1
  258. "PageNumber"
  259. call HyperBookToBack()
  260. "Preparation 1"
  261. "Small"
  262. Note1
  263.     Special character 1
  264.    ASCII character 96 : it looks like a grave accent (as on '
  265. '), and
  266.    shares a key with the '~'.  I cannot show it here without invoking its
  267.    effect so, for these notes, I'll use the backslash character \ instead.
  268.      
  269. This marks the word \hilighted\ as a target for highlighting.
  270.      This also marks the word \hilighted as a target for highlighting.
  271.      You need only mark the lefthand end to \highlight a single word -
  272.      the next space is read as the righthand delimiter.  But if there is,
  273.      for example, punctuation which you wish to exclude, then both ends 
  274.      need to be \marked\, as I have done here.
  275.      An end-of-line word with a single mark will be correctly \highlighted
  276.      even though there is no following space.
  277.      The \marked chunk\ may be more than one word in length, in which case
  278.      markers must be used \at both ends\.
  279.    Highlighted words will do their job anywhere - in the main text or in
  280.    notes.  They will always take you directly to the related note,
  281.    assuming it exists.  If it doesn't exist, you'll be told 'Reference 
  282.    not found', and you'll stay where you are.
  283. "Head"
  284. "Header"
  285. Preparation 2
  286. "PageNumber"
  287. call HyperBookToBack()
  288. "Preparation 2"
  289. "Small"
  290. "Builder2"
  291. Note1
  292.     Special character 2 is a full stop ( or a 'period' if you prefer).
  293.         
  294.     A full stop alone on a line marks any of the following :
  295.               
  296. An end-of-screen break in the middle of the main text.
  297.               The end of the main text.
  298.               An end-of-screen break in the middle of a note.
  299.               The end of a note.
  300.     A full stop immediately followed by one or more words marks the
  301.     beginning of a note.  The rest of the text on that line, following the
  302.     full stop, should be exactly the same as a highlighted chunk of text
  303.     elsewhere in the file.  The one takes you to the other.  
  304.     So at the end of the main text or at the end of a note (except the
  305.     last one) you must have 
  306. two consecutive lines
  307.  beginning with a full
  308.     stop, the first one on its own to mark an end, the next one followed by
  309.     a label to indicate the start of a note.
  310.             See the next screen, and/or comments in Builder.
  311. "Head"
  312. "Header"
  313. Preparation 3
  314.     "Builder"
  315. "PageNumber"
  316. call HyperBookToBack()
  317. "Preparation 3"
  318. Note1
  319.      | Main text
  320.      |                                 }
  321.      | .                 Page break    } Repeated until end
  322.      | Main text                       } of main text
  323.      |                                 }
  324.      |
  325.      | .                 End of main text
  326.      | .Note 1           Label for first note
  327.      | Note text                                         }
  328.      |                                                   }
  329.      |                                 }                 }  
  330.      | .                 Page break    } Repeated until  } Repeated for
  331.      | Note text                       } end of note     } all notes   
  332.      |                                 }                 } until end of
  333.      |                                                   } last note
  334.      | .                 End of note                     }
  335.      | .Note n           Label for nth note              }
  336.      |
  337.     An 'end of note' line is not needed for the last note.
  338.     You don't have to include page-break markers.  Without them, the
  339.     'Builder' program will break the text anyway after every 30 lines.
  340.     But they are worth including. As long as they are within 30 lines of 
  341.     each other, they allow you to control where the breaks will come.
  342. "Head"
  343. "Header"
  344. Preparation 4
  345. "PageNumber"
  346. call HyperBookToBack()
  347. 10/31
  348. "Hook"
  349. "Preparation 4"
  350. "Hyperbook2"
  351. "HBReader2"
  352. "Master12"
  353. Note1
  354.     Once you have prepared your text, you start the compilation by giving
  355.     the command 'rx Builder' or by clicking on the Builder icon 
  356.     (assuming the icon's default tool setting is 'rx').
  357.     If Master1 is not present, the program will not work.
  358.     The program uses HBReader if it is available.  If it is not, then
  359.     Hyperbook will be used. If neither is available, the program will
  360.     not work.
  361.     A file selector appears.  Click on the name of the file you wish to
  362.     process. Then all you have to do is watch (if you want to).
  363. DO NOTHING MORE
  364.  until a message box appears, telling you that the
  365.     compilation is complete, and asking if you want to run the new
  366.     version immediately.
  367.     What you will see, if you watch the process, is described on the 
  368.     next two screens.
  369.               
  370. "Head"
  371. "Header"
  372. Compilation 1
  373.     "Master1"
  374. "HBReader"
  375. "Hyperbook"
  376. "PageNumber"
  377. call HyperBookToBack()
  378. 11/31
  379. "Compilation 1"
  380. "Small"
  381.     "frames2"
  382. Note1
  383.                     Sweep One - forwards
  384.        
  385.     For each screenload, only the text appears on the screen during the
  386.     first sweep through.
  387.        
  388.     The following are dealt with page by page during this process, but are
  389.     not displayed at this stage :
  390.      - Highlighting of chunks of text.
  391.      - Placement of page titles in the top left corner, plus numbers to
  392.        indicate their position in each segment :
  393.               ThisNote 1, ThisNote 2, and so on.
  394.      - Any frames which have been included.
  395.      If you want more of the activity to be displayed during compilation,
  396.      remove some of the 'Interactive(0)' settings in the program. I have't
  397.      checked, but I don't think this would involve any noticeable increase
  398.      in processing time.
  399. "Head"
  400. "Header"
  401. Compilation 2
  402. "frames"
  403. "PageNumber"
  404. call HyperBookToBack()
  405. 12/31
  406. "Compilation 2"
  407. "Small"
  408. Note1
  409.                      Sweep Two - back to the start
  410.     A reverse sweep through all pages then takes place to deal with the
  411.     upper-right page-number entries, and to place a prompting arrow on
  412.     pages which are the last (or only) one in their section.
  413.     This is much quicker than the first sweep, and everything is visible at
  414.     this stage.  A few seconds after this is finished, when you have been
  415.     taken back on page 1, a 'Processing complete' message appears. 
  416. Until it does, just WAIT.
  417.     If you accept the offer of an immediate view of the processed result,
  418.     wait a second or so for the newly stored copy to be loaded in - a
  419.     momentary screen darkening and/or a flickering in the pointer gadget
  420.     will be the signs - and then try it out.  
  421. "Head"
  422. "Header"
  423. Compilation 3
  424. "PageNumber"
  425. call HyperBookToBack()
  426. 13/31
  427. "Hook"
  428. "Compilation 3"
  429. Note1
  430.     If your output document is called, say, 'Document.ht', then 
  431.     either
  432.              HBReader Document.ht   OR   Hyperbook Document.ht
  433.     will be enough to run it.
  434.     The usual alternative of clickable icons in a WorkBench window will
  435.     of course work if appropriate default tool settings are installed via
  436.     'Information'.
  437.     If you use the 'Update' menu item, you should find that a Hyperbook
  438.     icon for new your document has been produced.  That new icon should
  439.     have appeared 
  440. on top of
  441.  the Master1 icon, since a copy of that one was
  442.     used to obtain the new icon. You'll want to slide it into its own
  443.     position.
  444.           
  445. "Head"
  446. "Header"
  447. Running 1
  448. "PageNumber"
  449. call HyperBookToBack()
  450. 14/31
  451. "Hook"
  452. "Running 1"
  453. "Builder2"
  454. "HBReader2"
  455. "Hyperbook2"
  456. Note1
  457.      
  458.     You will have seen how various plain or coloured frames have been 
  459.     added to this set of pages to shape the output and generally add
  460.     interest.  These frames can be inserted in two ways, both of which
  461.     work with either Hyperbook or HBReader :
  462.        1   Before the document file is converted by Builder, by
  463.            making appropriate insertions in the file.
  464.        2   After Builder has been used, by using a built-in macro.
  465.           
  466. "Head"
  467. "Header"
  468. Frames 1
  469. "Hyperbook"
  470. "HBReader"
  471.     "Builder"
  472. "PageNumber"
  473. call HyperBookToBack()
  474. 15/31
  475. "Frames 1"
  476. "Small"
  477. Note1
  478.    Method 1   Inserting frames by making entries in the file
  479.     A line beginning with .Bx (for 'Box') is a frame specification.
  480.     This line ->     .Bx 200,20,400,80
  481.     will produce a frame with upper left corner at x = 200, y = 20 and
  482.     lower right corner at x = 400, y = 80.  The following settings apply :
  483.     background colour 0, border colour 1, shadow colour 2, shadow style
  484.     embossed. 
  485.     This line ->     .Bx 200,20,400,80,4
  486.     will produce the same, but with a background in colour 4.    
  487.     If you have Hyperbook, you could experiment with adding extra
  488.     arguments to vary the border and shadow colours.
  489.     Note how '.Bx' expects 4 or 5 arguments, and how references to it on
  490.     this page did not actually (try to) work because the full stops of
  491.     the .Bx entries were not first in their respective lines.
  492. "Head"
  493. "Header"
  494. Frames 2
  495. "PageNumber"
  496. call HyperBookToBack()
  497. 16/31
  498. "Frames 2"
  499. "Small"
  500. "Builder2"
  501. Note1
  502.    Method 2   Adding frames interactively after Builder has been used
  503.    The box which appears in the top left corner of every page to tell you
  504.    which section you are in, and how far into it you are, is also an
  505.    active gadget.  If you click on it it will prompt you to click at the
  506.    upper left and bottom right corners of an intended frame. The frame
  507.    appears, BEHIND any text which it happens to enclose.
  508.    If, for any reason, you were to run Builder again, all such entries
  509.    would be lost, for which there is a solution on the next screen ...
  510. "Head"
  511. "Header"
  512. Frames 3
  513.     "Builder"
  514. "PageNumber"
  515. call HyperBookToBack()
  516. 17/31
  517. "Frames 3"
  518. "Builder2"
  519. Note1
  520.    Method 2 has the advantage of saving you the problem of working out
  521.    (guessing) the x and y values for the two corners, and the disadvantage
  522.    of losing your entries if, for any reason, you rerun Builder.
  523.    But after you have used Method 2, have a look in 'Ram:'.  There you
  524.    will find a find called 'specs', and it will contain entries which look
  525.    like this :
  526.     |  SectionName n                    (n = page number within section)
  527.     |  .Bx 110,42,318,68
  528.     |  AnotherSection n
  529.     |  .Bx 20,22,500,34
  530.    That is, a reminder of which page within which section the frame was
  531.    designed for, and a set of specifications. It is no great task
  532.    to copy such entries from the file 'Ram:specs' into your original
  533.    document, putting them somewhere in the patch of text which produces
  534.    the page in question.  You can add a background colour argument
  535.    at that point if you wish.  (All kinds of enhancements are possible in
  536.    this area, if you feel adventurous.)
  537.    The entries are then safe, even if you run Builder again, and they can
  538.    easily be adjusted if you have second thoughts about the position and
  539.    size of any of the frames.
  540. "Head"
  541. "Header"
  542. Frames 4
  543.     "Builder"
  544. "PageNumber"
  545. call HyperBookToBack()
  546. 18/31
  547. "Frames 4"
  548. "Small"
  549. "Small"
  550. "Small"
  551. "Small"
  552. Note1
  553.     You may be beginning to see that in fact TWO complete runs with
  554.     Builder are a good idea.  A development sequence might then be :
  555.     1  First run of Builder to get all the texts, clickable chunks, and
  556.        page numbering set up. 
  557.     2  Use the frame-making macro to add your decorations. 
  558.     If you have Hyperbook you can, of course, add anything else you fancy
  559.     such as drawings and pictures, and/or make any other changes, like
  560.     changing the colour or style of text.
  561.     3  In a text editor, pull the .Bx entries which have been stored in
  562.       'Ram:temp' into your document file.
  563.     4  Second run of Builder to include the frames.
  564.     Very useful in the latter stages is the upper-right corner gadget for
  565.     pushing the entire Hyperbook screen to the back, allowing you to
  566.     have easy access to a text editor running in the background.
  567. "Head"
  568. "Header"
  569. Frames 5
  570. "PageNumber"
  571. call HyperBookToBack()
  572. 19/31
  573. "Hook"
  574. "Frames 5"
  575. "HBReader2"
  576. "Hyperbook2"
  577. "Builder2"
  578. Note1
  579.     Three small macros are contained in the hypertext documents you 
  580.     produce from Builder.  If you have Hyperbook you will be able to
  581.     see, edit, and improve them. 
  582.     With HBReader you can only use them.
  583.     When you click on a highlighted chunk of text, this macro reads the
  584.     text contained within the chunk, and then goes to the page of which
  585.     that chunk is the title.
  586.     When you click on a chunk of text, it changes its appearance, so that
  587.     you can always see which of the links you have already used. If you
  588.     want to unset them all to an 'unused' appearance, click on the 'Z'
  589.     gadget which appears only on page 1.  The 'Zero' macro does the work.
  590.     Wait until the 'Z' gadget switches back to its original colour, to show
  591.     it has finished, before doing anything else.
  592. FrameSpec
  593.     Prompts you to click twice to position a new frame, then creates
  594.     the frame, and stores its details in 'Ram:specs'.
  595.          
  596. "Head"
  597. "Header"
  598. Macros 1
  599.     "Builder"
  600. "Hyperbook"
  601. "HBReader"
  602. "PageNumber"
  603. call HyperBookToBack()
  604. 20/31
  605. "Hook"
  606. "Macros 1"
  607. "Small"
  608. Note1
  609.                 What can one say?  
  610.     ARexx is a super, clear, very powerful, and easy-to-use
  611.     computing language for quick day-to-day jobs.  
  612.     ARexx is the language supplied by Commodore as an integral 
  613.     part of Amiga Release 2.
  614.     I have done more with ARexx than with any other computing language,
  615.     and, believe me, I have tried quite a few.
  616.     I use ARexx every day, and have no intention of using anything
  617.     else (though I must confess to having said that about other
  618.     languages in the past).
  619.         
  620. "Head"
  621. "Header"
  622. ARexx 1
  623. "PageNumber"
  624. call HyperBookToBack()
  625. 21/31
  626. "Hook"
  627.     "ARexx 1"
  628. Note1
  629.          A system for browsing through documentation by
  630.          clicking on highlighted words or phrases, and
  631.          much, much more.
  632.          Whole books have been written about it ...
  633.          (mainly in connection with H*p*rC*rd on the M*c)
  634.             
  635. "Head"
  636. "Header"
  637. hypertext 1
  638. "PageNumber"
  639. call HyperBookToBack()
  640. 22/31
  641. "Hook"
  642. "hypertext 1"
  643. "Small"
  644. "MegaDisc2"
  645. "hypertext2"
  646. Note1
  647.     An Amiga implementation of hypertext.  It has always been the subject
  648.     of veiled hints and shrouded in mystery, even being referred to, for
  649.     some obscure reason, as 'Am*g*G**d*' (or something like that). To my
  650.     knowledge, no formal, thorough guide, suitable for the uninitiated, has
  651.     been published.
  652.                           An Apology
  653.     To you guys who have already made MegaDisc contributions on the 
  654.     subject of AmigaGuide, I'm sorry, but you have over-estimated the
  655.     intelligence, reading skills, common sense, and patience of this
  656.     particular reader. 
  657.     I have tried really hard, but I simply have not been able to get
  658.     AmigaGuide working in the way you describe.
  659.              
  660. "Head"
  661. "Header"
  662. AmigaGuide 1
  663. "hypertext"
  664. "MegaDisc"
  665. "PageNumber"
  666. call HyperBookToBack()
  667. 23/31
  668. "Hook"
  669. "AmigaGuide 1"
  670. Note1
  671. Note2
  672.                       M  E  G  A  D  I  S  C
  673.          
  674. The greatest!
  675.                        The best!
  676.                                     Everybody's favourite!
  677.        Indispensable!
  678.                        You need it!
  679.                                             Buy it!   
  680. Address :
  681.         P.O.Box 759,
  682.         Crows Nest 2065
  683.         Australia   
  684. "Head"
  685. "Header"
  686. MegaDisc 1
  687. "PageNumber"
  688. call HyperBookToBack()
  689. 24/31
  690. "Hook"
  691. Drawing3
  692. Drawing4
  693. "MegaDisc 1"
  694. Note1
  695.            
  696. "Hyperbook is a general-purpose multi-media
  697.          tool that lets you store and organize text 
  698.          and graphics in any format."
  699.                                              User's Guide, p.1
  700.                                              
  701.  1990 Gold Disk Inc.
  702.     Hyperbook was designed and written by 
  703.                           
  704. AHA! Software
  705.                           Nick Sullivan and Chris Zamara
  706.                           Victoria, British Columbia, Canada
  707.     and is distributed by Gold Disk Inc., 
  708.                           
  709. P.O.Box 789, Streetsville,
  710.                           Mississauga, Ontario, 
  711.                           Canada L5M 2C2
  712.                       
  713. I rate it 10 out of 10. 
  714.             
  715. "Head"
  716. "Header"
  717. Hyperbook 1
  718. "PageNumber"
  719. call HyperBookToBack()
  720. 25/31
  721. "Hook"
  722. Drawing3
  723. "Hyperbook 1"
  724. "Builder2"
  725. Note1
  726.     A freely distributable form of Hyperbook.  You can use it to run
  727.     Hyperbook units, but it does not (normally) allow the creation or
  728.     editing of objects.
  729.     In writing the Builder project, I have tried to make the whole thing
  730.     usable through HBReader alone.
  731.     Attempting to producing a version for which HBReader would be adequate
  732.     was the hardest part of the whole exercise.  For more details about
  733.     those problems, see my comments in 'Builder', or go to the next page.
  734.     Use the 'Return' gadget or key now if you'd rather not know.
  735.            
  736. "Head"
  737. "Header"
  738. HBReader 1
  739.     "Builder"
  740. "PageNumber"
  741. call HyperBookToBack()
  742. 26/31
  743. "HBReader 1"
  744. Note1
  745.     If you are using HBReader (as opposed to Hyperbook), you cannot, even
  746.     by means of a specifically written macro, create a new 'Note' which is
  747.     smaller than 62 x 24 or a new 'Button' smaller than 34 x 18.  You can,
  748.     however, create a new 'Drawing' of any size.  
  749.     I invite you to mull over the implications of these restrictions. 
  750.     They had somehow to be circumvented when it came to :
  751.        
  752.    Designing the highlighting which shows which chunks of text are
  753.            clickable, and the method used to indicate those chunks which
  754.            have already been clicked.
  755.        2   
  756. Allowing users to add frames interactively.
  757.     This is not easy to explain briefly, and it took some time to sort out,
  758.     but then I suppose the challenge is a part of the pleasure.  A curious
  759.     compromise was reached in the end. If a frame being added is larger
  760.     than 62 x 24, an empty 'Note' is used for the frame, because 'Note'
  761.     background colour changing works well.  For a smaller frame, a
  762.     'Drawing' is copied from a stored template, but its background colour
  763.     cannot be set by a fifth argument, because changing background colours
  764.     of drawings does not always work well.
  765. "Head"
  766. "Header"
  767. HBReader 2
  768. "PageNumber"
  769. call HyperBookToBack()
  770. 27/31
  771. "Hook"
  772. "HBReader 2"
  773. "Builder2"
  774. "Hyperbook2"
  775. Note1
  776.  Step   
  777.   1  Master1 is a single-page template of a Hyperbook page.
  778.      One of the first steps in Builder is to make a copy of 'Master1'
  779.      (called Master2), so that your original of Master1 remains untouched.
  780.   2  Master2 becomes page 1 of your output hypertext document.  Some of
  781.      the templates which it holds (being a copy of Master1) are removed.
  782.      Your page 1 contents are inserted into it, and then your further pages
  783.      are appended to it during the preparation process.
  784.   3  Finally, the complete Master2 is renamed as 'Document.ht' 
  785.      (or whatever you called your input file, plus '.ht').
  786.        
  787.         The contents of Master1, some of them not even visible, are
  788.         crucial to the process.  
  789. You are advised NOT to change it.
  790.           
  791. "Head"
  792. "Header"
  793. Master1 1
  794. "Hyperbook"
  795.     "Builder"
  796. "PageNumber"
  797. call HyperBookToBack()
  798. 28/31
  799. "Hook"
  800. "Master1 1"
  801.     "Frames2"
  802. "ARexx2"
  803. Note1
  804.     'Builder' is the ARexx program which takes your plain text
  805.     and converts it into a series of hypertext pages, with clickable
  806.     chunks marked and ready for you to use.  If you're interested in such
  807.     details, the 'Builder' file contains quite a few explanatory comments
  808.     Normally 'Builder' needs to be used only once for any correctly
  809.     prepared text, and so the fact that it takes some time to do the
  810.     conversion need not be a real concern.  You can watch it do its 
  811.     stuff, or find something else to do for a minute or two.
  812.     Elsewhere in this document is described a situation in which you may
  813.     well want to take Builder through a second run, but we won't go into
  814.     that now.
  815.     Though on second thoughts, why not.  It is precisely that sort of 
  816.     side-tracking that hypertext makes easy.  Have a quick look at
  817.     Frames now if you want to.
  818.           
  819. "Head"
  820. "Header"
  821. Builder 1
  822. "ARexx"
  823. "Frames"
  824. "PageNumber"
  825. call HyperBookToBack()
  826. 29/31
  827. "Builder 1"
  828. "Small"
  829. "ARexx2"
  830. "Hyperbook2"
  831. Note1
  832.                     What runs what?
  833.     For owner/users of Hyperbook, it is regular practice to have a
  834.     Hyperbook unit which contains and uses ARexx macros. 
  835.     In that situation, Hyperbook runs ARexx.
  836.     But the arrangement with 'Builder' is that an ARexx program first runs 
  837.     Hyperbook, and then the more usual setup, as described in the preceding
  838.     paragraph, comes into play.
  839.     This arrangement means that Builder itself remains OUTSIDE any
  840.     Hyperbook unit produced, and so does not add its own size to what it
  841.     produces.  It also means that all calls made by Builder to HML
  842.     functions must be preceded by 'HML_'.  All of which is getting
  843.     a bit complicated.  For more on this topic, see p.117 of the
  844.     Hyperbook manual.  For lots of examples, see the code of 'Builder'.
  845.      
  846. "Head"
  847. "Header"
  848. Builder 2
  849. "Hyperbook"
  850. "ARexx"
  851. "PageNumber"
  852. call HyperBookToBack()
  853. 30/31
  854. "Hook"
  855. "Builder 2"
  856. Note1
  857.     I have set my own colour preferences at about line 36 in the
  858.     code of the 'Builder' program.
  859.                  
  860.     If you want to change them, just edit the Builder file as required.
  861.           
  862. "Head"
  863. "Header"
  864. Colours 1
  865. "PageNumber"
  866. call HyperBookToBack()
  867. 31/31
  868. "Hook"
  869. Note3
  870. Note4
  871. Note5
  872. Note6
  873. Note7
  874. Note8
  875. Note9
  876. Note10
  877. "Colours 1"
  878. execute start-qed
  879. Note1
  880. "Small"
  881. "Large"
  882. "Drawing1"
  883. "Drawing2"
  884. "Head"
  885. "Header"
  886. "Hook"
  887.